.Dd $Mdocdate: February 23 2015 $
.Dt BN_ZERO 3
.Os
.Sh NAME
.Nm BN_zero ,
.Nm BN_one ,
.Nm BN_value_one ,
.Nm BN_set_word ,
.Nm BN_get_word
.Nd BIGNUM assignment operations
.Sh SYNOPSIS
.In openssl/bn.h
.Ft int
.Fo BN_zero
.Fa "BIGNUM *a"
.Fc
.Ft int
.Fo BN_one
.Fa "BIGNUM *a"
.Fc
.Ft const BIGNUM *
.Fo BN_value_one
.Fa void
.Fc
.Ft int
.Fo BN_set_word
.Fa "BIGNUM *a"
.Fa "unsigned long w"
.Fc
.Ft unsigned long
.Fo BN_get_word
.Fa "BIGNUM *a"
.Fc
.Sh DESCRIPTION
.Fn BN_zero ,
.Fn BN_one ,
and
.Fn BN_set_word
set
.Fa a
to the values 0, 1 and
.Fa w
respectively.
.Fn BN_zero
and
.Fn BN_one
are macros.
.Pp
.Fn BN_value_one
returns a
.Vt BIGNUM
constant of value 1.
This constant is useful for use in comparisons and assignment.
.Pp
.Fn BN_get_word
returns
.Fa a
if it can be represented as an
.Vt unsigned long .
.Sh RETURN VALUES
.Fn BN_get_word
returns the value
.Fa a ,
or 0xffffffffL if
.Fa a
cannot be represented as an
.Vt unsigned long .
.Pp
.Fn BN_zero ,
.Fn BN_one ,
and
.Fn BN_set_word
return 1 on success, 0 otherwise.
.Fn BN_value_one
returns the constant.
.Sh SEE ALSO
.Xr bn 3 ,
.Xr BN_bn2bin 3
.Sh HISTORY
.Fn BN_zero ,
.Fn BN_one ,
and
.Fn BN_set_word
are available in all versions of SSLeay and OpenSSL.
.Fn BN_value_one
and
.Fn BN_get_word
were added in SSLeay 0.8.
.Pp
.Fn BN_value_one
was changed to return a true
.Vt const BIGNUM *
in OpenSSL 0.9.7.
.Sh BUGS
Someone might change the constant.
.Pp
If a
.Vt BIGNUM
is equal to 0xffffffffL it can be represented as an
.Vt unsigned long
but this value is also returned on error.
